package clinivida.controller;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

import org.primefaces.event.DateSelectEvent;

import clinivida.DAO.ConsultaDAO;
import clinivida.DAO.DaoException;
import clinivida.DAO.UsuarioDAO;
import clinivida.entity.Consulta;
import clinivida.entity.Pessoa;
import clinivida.entity.Usuario;

@ManagedBean(name = "usuario")
@SessionScoped
public class ConsultaBean
{
    private Consulta       consulta;

    private List<Consulta> listConsulta;

    private ConsultaDAO    consultaDAO;
    
    private Pessoa pessoa;
    
    private Pessoa pessoaMedico;

    public ConsultaBean()
    {
        consultaDAO = new ConsultaDAO();
        listConsulta = new ArrayList<Consulta>();
        consulta = new Consulta();
        consulta.setData2(new Date());

        listaConsultas(consulta.getData2());
    }
    
    public void atualizaListaConsulta(DateSelectEvent event){
        consulta.setData2(event.getDate());
        listaConsultas(consulta.getData2());
    }

    public void listaConsultas(Date dataConsulta)
    {
        List<Consulta> listaConsultaBd = (List<Consulta>) consultaDAO.listeConsultas(dataConsulta);
        listConsulta = consulta.inicializaArrayHorariosConsulta();

        for(Consulta consultaAux : listaConsultaBd)
        {
            int index = consultaAux.getData2().getHours();
            switch(index)
            {
                case 8:
                    if(consultaAux.getData2().getMinutes() == 0)
                        listConsulta.add(0, consultaAux);
                    else
                        listConsulta.add(1, consultaAux);
                    break;
                case 9:
                    if(consultaAux.getData2().getMinutes() == 0)
                        listConsulta.add(2, consultaAux);
                    else
                        listConsulta.add(3, consultaAux);
                    break;
                case 10:
                    if(consultaAux.getData2().getMinutes() == 0)
                        listConsulta.add(4, consultaAux);
                    else
                        listConsulta.add(5, consultaAux);
                    break;
                case 11:
                    if(consultaAux.getData2().getMinutes() == 0)
                        listConsulta.add(6, consultaAux);
                    else
                        listConsulta.add(7, consultaAux);
                    break;
                case 12:
                    if(consultaAux.getData2().getMinutes() == 0)
                        listConsulta.add(8, consultaAux);
                    else
                        listConsulta.add(9, consultaAux);
                    break;
                case 13:
                    if(consultaAux.getData2().getMinutes() == 0)
                        listConsulta.add(10, consultaAux);
                    else
                        listConsulta.add(11, consultaAux);
                    break;
                case 14:
                    if(consultaAux.getData2().getMinutes() == 0)
                        listConsulta.add(12, consultaAux);
                    else
                        listConsulta.add(13, consultaAux);
                    break;
                case 15:
                    if(consultaAux.getData2().getMinutes() == 0)
                        listConsulta.add(14, consultaAux);
                    else
                        listConsulta.add(15, consultaAux);
                    break;
                case 16:
                    if(consultaAux.getData2().getMinutes() == 0)
                        listConsulta.add(16, consultaAux);
                    else
                        listConsulta.add(17, consultaAux);
                    break;
                case 17:
                    if(consultaAux.getData2().getMinutes() == 0)
                        listConsulta.add(18, consultaAux);
                    else
                        listConsulta.add(19, consultaAux);
                    break;
                case 18:
                    if(consultaAux.getData2().getMinutes() == 0)
                        listConsulta.add(20, consultaAux);
                    break;

            }
        }
    }

    public void setListConsulta(List<Consulta> listConsulta)
    {
        this.listConsulta = listConsulta;
    }

    public List<Consulta> getListConsulta()
    {
        return listConsulta;
    }

    public void setConsulta(Consulta consulta)
    {
        this.consulta = consulta;
    }

    public Consulta getConsulta()
    {
        return consulta;
    }

    public void setPessoaMedico(Pessoa pessoaMedico)
    {
        this.pessoaMedico = pessoaMedico;
    }

    public Pessoa getPessoaMedico()
    {
        return pessoaMedico;
    }

    public void setPessoa(Pessoa pessoa)
    {
        this.pessoa = pessoa;
    }

    public Pessoa getPessoa()
    {
        return pessoa;
    }

}
